//
//  SCoreData.h
//  STool
//
//  Created by banggo on 15/7/13.
//
//

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface SCoreData : NSObject

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;




/**
 *  表名称
 */
@property (nonatomic, copy) NSString *tableName;
/**
 *  数据库名称
 */
@property (nonatomic, copy) NSString *databaseName;

/**
 *  设置表名和数据库名称
 *
 *  @param tableName    表名
 *  @param databaseName 数据库名
 */
- (instancetype)setTableName:(NSString *)tableName andDatabaseName:(NSString*)databaseName;
/**
 *  初始化
 *
 *  @return self
 */
+ (id)sharedInstance;
/**
 *  插入数据
 *
 *  @param dictionary 需要插入的字典数据
 *  @param key        需要检查的参数(nil即为无检查参数)
 *
 *  @return 成功失败Bool
 */
- (BOOL)insertCoreData:(NSDictionary*)dictionary andKey:(NSString*)key,...NS_REQUIRES_NIL_TERMINATION;
/**
 *  查询全部
 *
 *  @param pageSize    每页数量
 *  @param currentPage 第几页
 *
 *  @return 返回数据
 */
- (NSMutableArray*)selectData:(int)pageSize
                    andOffset:(int)currentPage
             andCompositorKey:(NSString*)compostinStr;
/**
 *  查询特定参数
 *
 *  @param pageSize    每页数量
 *  @param currentPage 第几页
 *  @param ids         key－Value，key－Value
 *
 *  @return 返回数据
 */
- (NSMutableArray*)selectData:(int)pageSize
                    andOffset:(int)currentPage
             andCompositorKey:(NSString*)compostinStr
               andKeyAndValue:(id)ids,...NS_REQUIRES_NIL_TERMINATION;

/**
 *  删除所有数据
 *
 *  @return 成功失败Bool
 */
-(BOOL)deleteDataWithKeyAndValue:(id)ids,...NS_REQUIRES_NIL_TERMINATION;

/**
 *  更新数据
 *
 *  @param mainKey   需要更新数据的主键
 *  @param mainValue 需要更新数据的主键数据
 *  @param ids       需要更新的数据的key和Value
 *
 *  @return bool
 */
- (BOOL)upDataMainKey:(NSString*)mainKey
            mainValue:(NSString*)mainValue
 andUpDataKeyAndValue:(id)ids,...NS_REQUIRES_NIL_TERMINATION;



@end
